package cn.uexpo.lhz.common.utils;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;

import cn.uexpo.lhz.biz.DictionaryBiz;
import cn.uexpo.lhz.biz.DictionaryItemBiz;
import cn.uexpo.lhz.common.oldBase.BOException;import cn.uexpo.lhz.domain.DictionaryItem;


@Service
public class DictionaryUtil {

	Logger log = LoggerFactory.getLogger(this.getClass());
	@Autowired
	protected DictionaryBiz dictionaryBiz;
	@Autowired
	protected DictionaryItemBiz dictionaryItemBiz;
	
	/**
	 * 根据字典编码，条目编码获取条目值
	 * 从数据库获取最新值##
	 * @param dictCode
	 * @param itemCode
	 * @return
	 */
	public String getItemValue(String dictCode,String itemCode) {
	    String value=dictionaryBiz.selectValueBy(dictCode, itemCode);
	    log.info("当前字典编码："+dictCode+",当前条目编码："+itemCode+".对应的值是---------："+value);
	    return value;
	}
	/**
	 * 根据字典编码，条目编码获取条目值
	 * 从数据库获取最新值##
	 * 获取可用的值##
	 * @param dictCode
	 * @param itemCode
	 * @return
	 */
	public String getItemValueUsable(String dictCode,String itemCode) {
		String value="";
		Integer usableFlag=0;
		String usableMsg="可用";
		DictionaryItem item=dictionaryBiz.selectDictItmeByDicCodeItemCode(dictCode, itemCode);
		if (item!=null) {
			usableFlag=item.getExtint2();
			if (usableFlag==null) {
				usableFlag=1;
			}
			
		}
		if (usableFlag==0) {
			usableMsg="不可用";
		}else {
			usableMsg="可用";
			value=item.getValue();
		}
		log.info("当前字典编码："+dictCode+",当前条目编码："+itemCode+".对应的值是---------："+value+".是否可用：---------："+usableMsg);
		return value;
	}
	
	/**
	 * 根据字典编码获取字典条目
	 * @param dictCode
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryItem> selectItmesByDictCode(String dictCode) throws Exception {
		List<DictionaryItem> items=dictionaryBiz.selectDictItmesByDictCode(dictCode);
		 log.info("字典长度："+(items==null?0:items.size())+"字典列表："+(items==null?null:items));
		return items;
	}
	/**
	 * 根据字典编码获取字典条目
	 * 获取可用的值##
	 * @param dictCode
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryItem> selectItmesByDictCodeUsable(String dictCode) throws Exception {
		List<DictionaryItem> items=dictionaryBiz.selectDictItmesByDictCode(dictCode);
		List<DictionaryItem> newItems=new ArrayList<DictionaryItem>();
		
		if (items!=null&&items.size()>0) {
			for (DictionaryItem item : items) {
				Integer usableFlag=0;//是否可用标记：0不可用
				usableFlag=item.getExtint2();
				if (usableFlag==null) {
					usableFlag=1;
				}
				if (usableFlag==1) {
					newItems.add(item);
				}
			}
		}
		log.info("字典长度："+(newItems==null?0:newItems.size())+"字典列表："+(newItems==null?null:newItems));
		return newItems;
	}
	/**
	 * 根据字典编码查看 条目编码和条目值
	 * 条目编码和条目值的名称手动输入
	 * @param dictCode
	 * @param itemCode
	 * @param itemValue
	 * @return
	 */
	public List<JSONObject> selectItemsJson(String dictCode,String itemCode,String itemValue) {
		List<JSONObject> list=dictionaryBiz.selectJsonByDictCode(dictCode, itemCode, itemValue);
		return list;
	}
	/**
	 * 根据字典编码查看 条目编码和条目值
	 * 条目编码和条目值的名称手动输入
	 * 获取可用的值##
	 * @param dictCode
	 * @param itemCode
	 * @param itemValue
	 * @return
	 */
	public List<JSONObject> selectItemsJsonUsable(String dictCode,String itemCode,String itemValue) {
		List<JSONObject> list = new ArrayList<JSONObject>();
		List<DictionaryItem> items = dictionaryBiz.selectDictItmesByDictCode(dictCode);
		for (DictionaryItem item : items) {
			Integer usableFlag=0;//是否可用标记：0不可用
			usableFlag=item.getExtint2();
			if (usableFlag==null) {
				usableFlag=1;
			}
			if (usableFlag==1) {
				JSONObject obj = new JSONObject();
				obj.put(itemCode, item.getItemcode());
				obj.put(itemValue, item.getValue());
				list.add(obj);
			}
		
		}
		return list;
		
	}
	/**
	 * 根据字典编码查看 条目编码和条目值
	 * 条目编码和条目值的名称手动输入
	 * 含“请选择”
	 * @param dictCode
	 * @param itemCode
	 * @param itemValue
	 * @return
	 */
	public List<JSONObject> selectItemsJsonInit(String dictCode,String itemCode,String itemValue) {
		List<JSONObject> list=dictionaryBiz.selectJsonInitFalg(dictCode, itemCode, itemValue);
		return list;
	}
	
	/**
	 * 根据字典编码查看 条目编码和条目值
	 * 条目编码和条目值的名称手动输入
	 * 含“请选择”##
	 * 获取可用的值##
	 * @param dictCode
	 * @param itemCode
	 * @param itemValue
	 * @return
	 */
	public List<JSONObject> selectItemsJsonInitUsable(String dictCode,String itemCode,String itemValue) {
		List<JSONObject> list = new ArrayList<JSONObject>();
		List<DictionaryItem> items = dictionaryBiz.selectDictItmesByDictCode(dictCode);
		JSONObject objInit = new JSONObject();
		objInit.put(itemCode, "");
		objInit.put(itemValue, "请选择");
		list.add(objInit);
		for (DictionaryItem item : items) {
			Integer usableFlag=0;//是否可用标记：0不可用
			usableFlag=item.getExtint2();
			if (usableFlag==null) {
				usableFlag=1;
			}
			if (usableFlag==1) {
				JSONObject obj = new JSONObject();
				obj.put(itemCode, item.getItemcode());
				obj.put(itemValue, item.getValue());
				list.add(obj);
			}
		}
		return list;
	}
	
	
	
	/**
	 * 根据dicCode itemCode查找该条目
	 * @param dictCode
	 * @param itemCode
	 * @return
	 * @throws BOException
	 */
    public DictionaryItem selectItmeByCode(String dictCode,String itemCode) {
    	
    	return dictionaryBiz.selectDictItmeByDicCodeItemCode(dictCode, itemCode);
    }
	
	
}
